CC=gcc
COMMON_OBJ=srkrt_method.o srkrt_dynamic_list.o srkrt_dynamic_stack.o srkrt_ia.o
COMMON_FILE=srkrt_method.c srkrt_dynamic_list.c srkrt_dynamic_stack.c srkrt_ia.c
GTK_OBJ=srkrt_disp_gui.o srkrt_disp_gui_callbacks.o
GTK_FILE=srkrt_disp_gui.c srkrt_disp_gui_callbacks.c

IVY_FILE=srkrt_disp_gui_ivy.c
IVY_OBJ=srkrt_disp_gui_ivy.o

GTK_NAME=sura_gtk
GTK_NAME_SERV=sura_net_server
GTK_NAME_CLIENT=sura_net_client

COMMON_FLAG=-ansi -pedantic -Wall -g -Wwrite-strings
GTK_FLAG=`pkg-config --libs --cflags gtk+-2.0`
IVY_FLAG=-Llibivy -Ilibivy `pcre-config --libs` -lglibivy
TAR_NAME=surakarta-`date +%d%m%y`.tar.gz
DATA_PATH=./
IMAGES_PATH=$(DATA_PATH)images
SAVES_PATH=$(DATA_PATH)saves
DEFINES=-D IMAGES_PATH="\"$(IMAGES_PATH)\"" -D SAVES_PATH="\"$(SAVES_PATH)\""


all:	clean_exe	clean	compil_gtk	compil_network	clean

# compilation des fichiers communs
compil_common:	$(COMMON_OBJ)

# regle de compilation pour les fichiers communs
%.o: %.c
	$(CC) -c $(COMMON_FLAG) $<


compil_gtk: compil_common
# compilation des fichiers gtk
	$(CC) $(DEFINES) -c $(GTK_FILE) $(GTK_FLAG) $(COMMON_FLAG)
# edition de lien et creation de l'executable
	$(CC) $(GTK_OBJ) $(COMMON_OBJ) $(GTK_FLAG) $(COMMON_FLAG) -o $(GTK_NAME)

compil_network:	compil_ivy	compil_common compil_network_serveur compil_network_client

compil_network_serveur:
# compilation des fichiers gtk avec Ivy
	$(CC) -D NETWORK -D SERVER $(DEFINES) -c $(GTK_FILE) $(IVY_FILE) $(GTK_FLAG) $(COMMON_FLAG)
# edition de lien et creation de l'executable
	$(CC) $(GTK_OBJ) $(COMMON_OBJ) $(IVY_OBJ) $(GTK_FLAG) $(IVY_FLAG) $(COMMON_FLAG) -o $(GTK_NAME_SERV)

compil_network_client:
# compilation des fichiers gtk avec Ivy
	$(CC) -D NETWORK -D CLIENT $(DEFINES) -c $(GTK_FILE) $(IVY_FILE) $(GTK_FLAG) $(COMMON_FLAG)
# edition de lien et creation de l'executable
	$(CC) $(GTK_OBJ) $(COMMON_OBJ) $(IVY_OBJ) $(GTK_FLAG) $(IVY_FLAG) $(COMMON_FLAG) -o $(GTK_NAME_CLIENT)

# permet de compiler la bibliotèque Ivy
compil_ivy:
	make -C libivy

clean:
# supression des fichiers objets
	rm -f *.o
#supression des fichiers de sauvegardes
	rm -f *~

clean_exe:
#suppression des executables crees.
	rm -f $(GTK_NAME) $(GTK_NAME_SERV) $(GTK_NAME_CLIENT)

run_server:
	./$(GTK_NAME) SERVER

run_client:
	./$(GTK_NAME) CLIENT

dist:	clean	clean_exe
# cree une archive tar.gz qui contient tous les fichiers du programme ( sans
# les fichiers svn )

	tar -cvf  $(TAR_NAME) --exclude='*svn*' *

